#include <iostream>
using namespace std;
class A

{

public:
	A();

	~A();
	virtual void output(){cout<<"A"<<endl;}

};
A::A()
{
	cout<<"construct A"<<endl;
	//output();
}
A::~A()

{

	printf("delete A \n");
	output();

}

class B : public A

{

public:
	B();
	~B();

	 void output(){cout<<"B"<<endl;}

};
B::B()
{
cout<<"construct B"<<endl;
   //output();
}
B::~B()

{

	printf("delete B \n");
	output();

} 
class parent

{

public:

	virtual void output();

};

void parent::output()

{

	printf("parent!");

}

class son : public parent

{

public:

	virtual void output();

};

void son::output()

{

	printf("son!");

} 
//int main()
//{
//	A *pa = new B();
//
//	delete pa; 
//	son s;
//
//	::memset(&s , 0 , sizeof(s));
//
//	parent& p = s;
//
//	p.output(); 
//
//
//	return 0;
//}